<?php
	include_once '../../include/inc_session.php';	
	
	$oTypepers 	= null;
	$oContrat = new dataObject_contrat();
	$oConnexionBis = new CDatabaseMysql();
	/**
	 * Construction du formulaire TYPE MORAL
	 */
	
	//RECUPERATION DU TYPE DE PERSONNE SELON L'INTERVENANT CHOISI.
	$sTypeValue = '';
	$sCivilite  = '';
	$sSexe      = '';
	$sEtat      = '';
	$sTypeAssure= '';
	$sTypeRole	= '';
	
	//var_dump($_SESSION);
	if(isset($_GET['idcontrat']) && $_GET['idcontrat']!='')
	{
		$_SESSION['idcontrat'] = $_GET['idcontrat'];
	}
	if(isset($_GET['Identifiant_personne']) && (!empty($_GET['Identifiant_personne'])))
	{
		$_SESSION['IdPers'] = $_GET['Identifiant_personne'];
	}
	$oTypepers 	= new dataObject_personne($_SESSION['IdPers']);
	$sTypeValue = $oTypepers->_TYPE_PERSONNE;
	$sCivilite  = $oTypepers->_CIVILITE_PERSONNE;
	$sSexe      = $oTypepers->_SEXE_PERSONNE;
	$sEtat      = $oTypepers->_ETAT_PERSONNE;
	
	
	if((isset($_GET['idrole']) && (!empty($_GET['idrole']))) || isset($_SESSION['idRolePers']) )
	{
		$idRol = isset($_GET['idrole']) ? $_GET['idrole'] : $_SESSION['idRolePers'];
		$oPers 	= new dataObject_personne();
		$aInfos = $oPers->personne_getInfosFromRole($idRol);
		$sTypeAssure = $aInfos['Type_assure'];
		$sTypeRole	= $aInfos['Type_role'];	
	}
	
	if(isset($_GET['chgmtcouv']) || isset($_SESSION['chgmtcouv']))
	{
		$nIdcontrat = $_SESSION['idcontrat'];
		$oContrat = new dataObject_contrat($nIdcontrat);
		$numContrat = $oContrat->_NUMERO;
		$urlRetour = "../changecouverture/intervenant_list.php?idcontrat=".$_SESSION['idcontrat'];
		$urlAnnuler = "../changecouverture/index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['idcontrat']."&Identifiant_personne=".$_SESSION['IdPers']."&idrole=".$_SESSION['idRolePers'];
	}
	else if(isset($_GET['modcontrac']))
	{
		$numContrat = $_SESSION['modcontrac'];
		
		$nIdcontrat = $oContrat->contrat_getIdFromNumContrat($numContrat);
		$urlRetour = "../modcontract/index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac'];
		$urlAnnuler = "../modcontract/index.php?idbloc=".$_SESSION['idbloc']."&idfonction=".$_SESSION['idfonction']."&idc=".$_SESSION['modcontrac'];
	}
	
	if(isset($_POST['valider']))
	{
		$oTypepers 		= new dataObject_personne($_SESSION['IdPers']);
		$sTypeValue 	= $_POST['FS_Type_personne'];
		$sCivilite  	= $_POST['FS_Civilite'];
		$sSexe			= $_POST['FS_Sexe'];
		$sTypeAssure 	= $_POST['FS_Type_dassure'];
		$sTypeRole		= $_POST['FS_Type_role'];

	}
	// construction de l’objet Template
	if($sTypeValue=='P') $oPageEdit = new Template(PATH_TEMPLATE.'tpl_edit_pers_physique.html');
	else $oPageEdit = new Template(PATH_TEMPLATE.'tpl_edit_pers_morale.html');

	//remplacement simple
	$oPageEdit->replace('nom_module', $oBloc->_MENU_NOM);
	$oPageEdit->replace('nom_fonction', $oFonction->_MENU_AFFICHE);
	$oPageEdit->replace('nom_element',"Détail Intervenant");
	
	
	
	
	//RÉCUPÉRATION DE L'IDENTIFIANT DU CONTRAT DE LA DATE D'EFFET
	$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
	
	//RECHERCHE SUR LES CONDITIONS DE VENTE DE TYPE JUSTIFICATIF LIEES À CERTAINS CRITÈRES.
	$oCondtVente = new dataObject_conditionVente();
	$ncdtv = $oCondtVente->get_conditionVenteJustContrat($nIdcontrat,$dDateEffet);
	if($ncdtv>0) $_SESSION['justificatif'] = true;
	else unset($_SESSION['justificatif']);
	
	//RECHERCHE SI LE PRODUIT LIÉ AU CONTRAT À DES GARANTIES OPTIONNELLES; ON RETOURNE L'IDENTIFIANT DU PRODUIT.
	$oProduit = new dataObject_produit();
	//$nIdProdGarn = $oProduit->getProduitGarantieOptionnelle($nIdcontrat);
	//par mesure de securité si on a cliqué sur une autre fonctionnalité 'mod contract) : anomalie 661
	$asProd = $oContrat->getFormuleProduitOffreDuContrat($nIdcontrat);
	$idProd = $asProd[0]['Identifiant_produit'];
	$bGarantOptionnel = $oProduit->produit_isGarantieOptionnelleExist($idProd);
	$_SESSION['gar_optionnel'] = $bGarantOptionnel;
	
	//RECHERCHE DES CONDITIONS DE VENTE DE TYPE LIMITE APPLICABLES À LA DATE D'EFFET DU CONTRAT EN COURS POUR L'OFFRE ET LE PRODUIT LIÉS.
	$oCondtVenteLim = new dataObject_conditionVente();
	$aCdtvLim = $oCondtVenteLim->get_condVenteLimOffProdContrat($nIdcontrat,$dDateEffet);
	
	//ON CALCULE L'AGE DE LA PERSONNE
	$oPersonne = new dataObject_personne($_SESSION['IdPers']);
	if(!isset($_POST['valider']))
	{
		$nAge = $oPersonne->personne_getAge($oPersonne->_DATE_NAISSANCE_PERSONNE);
	}
	else
	{
		$nAge = $oPersonne->personne_getAge($_POST['ODN_Date_naissance']);
	}
	
	
	/**
	 * Si parmi les conditions de vente, 
	 * il existe une condition de vente de code AGMIA ou AGMIE (âge minimum adulte ou enfant) 
	 * ou AGMAA ou AGMAE (âge maximum adulte ou enfant), contrôler la date de naissance.
	 * Valeur_condition_vente
	 */
	if(($aCdtvLim != null) && ($sTypeValue=="P"))
	{
		foreach ($aCdtvLim as $iKey => $aelmt){
			
			if( $sTypeAssure== dataObject_elementdico::TYP_ASSURE_ENFANT)
			{
				//tests pour le type assuré enfant
				if( ($aelmt['Code_condition_vente']=="AGMIE") && ($nAge < $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_jeune);
					$gbFormValid = false;
				}
				
				if( ($aelmt['Code_condition_vente']=="AGMAE") && ($nAge > $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_agee);
					$gbFormValid = false;
				}
				
			}
			else
			{ //si type assuré adulte (différent de enfant)	
				
				if( ($aelmt['Code_condition_vente']=="AGMIA") && ($nAge < $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_jeune);
					$gbFormValid = false;
				}
				
				if( ($aelmt['Code_condition_vente']=="AGMAA") && ($nAge > $aelmt['Valeur_condition_vente']) )
				{
					$oForm->ajouterErreur(condition_vente_personne_agee);
					$gbFormValid = false;
				}
			}
		}
	}
	
	//CONTROLE SUR LE TYPE DE ROLE DE LA PERSONNE À EDITER
	if($gbFormValid)
	{
		$acdtvBen = $oCondtVente->conditionVente_clauseBeneProdOffreContrat($nIdcontrat,$dDateEffet);
		if($_POST['FS_Type_role']=="S")
		{
			if(isset($_GET['chgmtcouv']) || isset($_SESSION['chgmtcouv']))
			{
				$oForm->ajouterErreur(contrat_souscripteur_unique);
				$gbFormValid = false;
			}
			else
			{
				$idSouscripteur = $oContrat->contrat_getIdSouscripteur($nIdcontrat);
				if((intval($_SESSION['IdPers']) != $idSouscripteur) && ($idSouscripteur != 0))
				{
					$oForm->ajouterErreur(contrat_plus_souscripteur);
					$gbFormValid = false;
				}
			}
		}
		
		$arole = $oContrat->contrat_getRoledeTypeBFromIdContrat($nIdcontrat);
		//if(($_POST['FS_Type_role']=="B") && ($arole != ""))
		if($_POST['FS_Type_role']=="B")
		{
			$idBeneficiaire = $oContrat->contrat_getIdBeneficiaire($nIdcontrat);
			if((intval($_SESSION['IdPers']) != $idBeneficiaire) && ($idBeneficiaire != 0))
			{
				$oForm->ajouterErreur(contrat_plus_beneficiaire);
				$gbFormValid = false;
			}

		}
		
		//$dDateEffet = $oContrat->contrat_getDateEffet($nIdcontrat);
		
		if(($acdtvBen == null) && ($arole=="") && isset($_GET['modcontrac']))
		{
			$oForm->ajouterErreur(condition_vente_clause_beneficiare);
			$gbFormValid = false;
		}
	}
	
	
	//MODIFICATION DE LA PERSONNE et DU ROLE
	if(isset($_POST['valider']) && $gbFormValid)
	{
		$oTypepers->_TYPE_PERSONNE 				= $sTypeValue;
		$oTypepers->_ETAT_PERSONNE 				= $sEtat;
		$oTypepers->_NOM_PERSONNE 				= $_POST['ONO_Nom_personne'];
		$oTypepers->_PRENOM_PERSONNE 			= $_POST['OPN_Prenom_personne'];
		$oTypepers->_CIVILITE_PERSONNE 			= $_POST['FS_Civilite'];
		$oTypepers->_NOM_JEUNE_FILLE_PERSONNE 	= $_POST['FJF_Nom_jeune_fille'];
		$oTypepers->_RAISON_SOCIALE 			= $_POST['ORS_Raison_sociale'];
		$oTypepers->_DATE_NAISSANCE_PERSONNE 	= $_POST['ODN_Date_naissance'];
		$oTypepers->_LIEU_NAISSANCE_PERSONNE 	= $_POST['OLN_lieu_naissance'];
		$oTypepers->_SEXE_PERSONNE 				= $_POST['FS_Sexe'];
		$oTypepers->_PROFESSION_PERSONNE 		= $_POST['FPR_Profession'];
		$oTypepers->_EMPLOYEUR_PERSONNE 		= $_POST['FLN_Employeur'];
		
		$oConnexionBis->beginTransaction();
		$nUpdate = $oTypepers->personne_update();
		
		if($nUpdate === false) $oForm->ajouterErreur(chgmt_couv_mod_personne_pbm);
		else
		{
			if(isset($_GET['chgmtcouv']) || isset($_SESSION['chgmtcouv']))
			{
				$sTypAss = (trim($sTypeAssure) == "-") ? 'NULL' :  $sTypeAssure ;
				$idRole = $oTypepers->insertRole($sTypeRole, 'A', $sTypAss ,$_SESSION['IdPers'], $nIdcontrat);

				if(!$idRole)
				{
					$oForm->ajouterErreur(chgmt_couv_creer_role_pbm);
					$oConnexionBis->rollback();
				}
				else 
				{
					$aGarantOblig = $oProduit->produit_getListGarantieObligatoire($_SESSION['produit']);
			        $aGarantObligTmp = array();
			        foreach($aGarantOblig as $i=> $aGarant)
			        {
		            	//on associe les garanties souscrites à l'assuré
		            	$aGarantObligTmp[$i]['Identifiant_garantie'] = $aGarant['Identifiant_garantie'];
		            	$aGarantObligTmp[$i]['Etat_garantie_souscrite'] = dataObject_garantieSouscrite::ETAT_ACTIF;
		            	$aGarantObligTmp[$i]['Date_effet_garantie_souscrite'] = $oContrat->_DATE_EFFET;
		            	$aGarantObligTmp[$i]['Date_fin_effet_garantie_souscrite'] = $oContrat->_DATE_ECHEANCE;
		            	$aGarantObligTmp[$i]['Identifiant_contrat'] = $nIdcontrat;
		            	$aGarantObligTmp[$i]['Identifiant_personne'] = $_SESSION['IdPers'];
		            	$aGarantObligTmp[$i]['Identifiant_formule'] = $_SESSION['formule'];
			            	
			         }
			            //on enregistre les garanties souscrites
		            $bGarant = $oContrat->contrat_insertGarantiesSouscrites($aGarantObligTmp);
		            if($bGarant===false) 
		            {
		            	$oForm->ajouterErreur(chgmt_couv_creer_gar_pbm);
		            	$oConnexionBis->rollback();
		            }
		            else 
		            {
			            if($sTypeRole == 'B') // modifier le contrat en alimentant la clause bénéficiaire
						{
								$oContrat->_CLAUSE_BENEFICIAIRE = $acdtvBen[0]['Code_condition_vente'];
								if($oContrat->contrat_update()===false)
								{
									$oForm->ajouterErreur(chgmt_couv_creer_clauseB_pbm);
									$oConnexionBis->rollback();
								}
								else 
								{
									$oConnexionBis->commit();
									$oForm->ajouterErreur(personne_creer);
									$_SESSION['personneCreerRat'] = 1;
									$_SESSION['idRolePers'] = $idRole;
								}
						}
						else 
						{
							$oConnexionBis->commit();
							$oForm->ajouterErreur(personne_modifiee);
							$_SESSION['personneCreerRat'] = 1;
							$_SESSION['idRolePers'] = $idRole;
						}
		            	//14 - Réafficher l’écran de saisie de personne afin de poursuivre la saisie
				    }
				}
				
			}
		}
	}
	
	if(isset($_GET['modc_adresse']) || isset($_GET['modc_communication']) || isset($_GET['modc_garantie']) 
	|| isset($_GET['modc_justificatif']) || isset($_GET['modc_refexterne']))
	{
		$oForm->ajouterErreur(personne_modifiee);
		$_SESSION['personneCreerRat'] = 1;
	}

	
	$oElementDico = new dataObject_elementdico();
	
	//--- CONSTRUCTION LISTE TYPES D'ASSURÉ M0003
	$asListTypeAssure = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::TYPE_ASSURE); 
	$aOptions4  = array();
	$aOptions4[0] = array('option_value_4'=>-1,'option_name_4'=>" ");
	foreach ($asListTypeAssure as $ikey => $aelmt)
	{
		$aOpt = array('option_value_4'=>$aelmt['Code_element'],'option_name_4'=>$aelmt['Nom_element']);
		if($aelmt['Code_element']==$sTypeAssure)$aOpt = array_merge($aOpt, array("selected_4"=> true));
		$aOptions4[$ikey+1] = $aOpt;
	}
	
	
	//--- CONSTRUCTION DE LA LISTE TYPES DE ROLE T0006
	$asListTypeRole = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_ROLE); 
	$aOptions5  = array();
	foreach ($asListTypeRole as $ikey => $aelmt)
	{
		$aOpt = array('option_value_5'=>$aelmt['Code_element'],'option_name_5'=>$aelmt['Nom_element']);
		if($aelmt['Code_element']==$sTypeRole)$aOpt = array_merge($aOpt, array("selected_5"=> true));
		$aOptions5[$ikey] = $aOpt;
	}

	
	//--- CONSTRUCTION DE LA LISTE TYPE DE PERSONNE T0005
	$asListTypepers = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::_TYPE_PERSONNE);
	$aOptions1 = array();
	
	foreach ($asListTypepers as $iKey => $aelmt)
	{
		$aOpt = array('option_value_1'=>$aelmt['Code_element'],'option_name_1'=>$aelmt['Nom_element']);		         
		if($aelmt['Code_element']==$sTypeValue)$aOpt = array_merge($aOpt, array("selected_1"=> true));
		$aOptions1[$iKey] = $aOpt;
	}
	//--- FIN CONSTRUCTION LISTE TYPE DE PERSONNE
	
	switch($sTypeValue)
	{	
		case "M": // CONSTRUCTION FORMULAIRE PERSONNE MORALE
			
			$asInputs = array(array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure'),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role'),
							  array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne'),
							  array('label_input'=>'RAISON SOCIALE','input_name'=>'ORS_Raison_sociale', 'input_value'=> $oTypepers->_RAISON_SOCIALE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30)
		   					  );
			break;
			
		   	
		case "P": // CONSTRUCTION DU FORMULAIRE PERSONNE PHYSIQUE
			$asInputs = array(array('label_select_4'=>"TYPE ASSURÉ",'select_name_4'=>'FS_Type_dassure'),
							  array('label_select_5'=>'TYPE ROLE','select_name_5'=>'FS_Type_role'),
							  array('label_select_1'=>'TYPE PERSONNE','select_name_1'=>'FS_Type_personne'),
							  array('label_input'=>'NOM','input_name'=>'ONO_Nom_personne', 'input_value'=> $oTypepers->_NOM_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'=>'PRENOM','input_name'=>'OPN_Prenom_personne', 'input_value'=> $oTypepers->_PRENOM_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_2'=>'CIVILITE','select_name_2'=>'FS_Civilite'),
							  array('label_input'=>'NOM JEUNE FILLE','input_name'=>'FJF_Nom_jeune_fille', 'input_value'=> $oTypepers->_NOM_JEUNE_FILLE_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'=>'DATE DE NAISSANCE','input_name'=>'ODN_Date_naissance', 'input_value'=> $oTypepers->_DATE_NAISSANCE_PERSONNE, 'size'=>'50', 'class'=>'resize_1', 'maxlength'=>10),
							  array('label_input'=>'LIEU DE NAISSANCE','input_name'=>'OLN_lieu_naissance', 'input_value'=> $oTypepers->_LIEU_NAISSANCE_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_select_3'=>'SEXE','select_name_3'=>'FS_Sexe'),
							  array('label_input'=>'PROFESSION','input_name'=>'FPR_Profession', 'input_value'=> $oTypepers->_PROFESSION_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30),
							  array('label_input'=>'EMPLOYEUR','input_name'=>'FLN_Employeur', 'input_value'=> $oTypepers->_EMPLOYEUR_PERSONNE, 'size'=>'50', 'class'=>'resizeall', 'maxlength'=>30)
		   					  );

			//--- CONSTRUCTION DES LISTES CYVILITE & SEXE
			$asListCivilite = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::CIVILITE);
			$aOptions2 = array();
			foreach ($asListCivilite as $iKey => $aelmt)
			{
				$aOpt = array('option_value_2'=>$aelmt['Code_element'],'option_name_2'=>$aelmt['Nom_element']);		         
				if($aelmt['Code_element']==$sCivilite)$aOpt = array_merge($aOpt, array("selected_2"=> true));
				$aOptions2[$iKey] = $aOpt;
			}
			
			$asListSexe = $oElementDico->elementdico_getListFromCode(dataObject_dictionnaire::SEXE);
			$aOptions3 = array();
			foreach ($asListSexe as $iKey => $aelmt)
			{
				$aOpt = array('option_value_3'=>$aelmt['Code_element'],'option_name_3'=>$aelmt['Nom_element']);		         
				if($aelmt['Code_element']==$sSexe)$aOpt = array_merge($aOpt, array("selected_3"=> true));
				$aOptions3[$iKey] = $aOpt;
			}
			//--- FIN CONSTRUCTION LISTES CYVILITE & SEXE	
			
			
			$oPageEdit->iterateReplace('options_2', $aOptions2);
			$oPageEdit->iterateReplace('options_3', $aOptions3);
			break;
			
	}//fin switch
	
	$oPageEdit->iterateReplace('options_4', $aOptions4);
	$oPageEdit->iterateReplace('options_5', $aOptions5);
	$oPageEdit->iterateReplace('options_1', $aOptions1);
	$oPageEdit->iterateReplace('champ_input', $asInputs);
	
	//GESTION DES BOUTONS
	//if(isset($_SESSION['IdPers']))
	if(isset($_SESSION['idRolePers']))
	{
		$oPageEdit->replace('url_adresse',"adresse/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		$oPageEdit->replace('url_communication',"communication/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		$oPageEdit->replace('url_references',"refexterne/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		
		//if((($nIdProdGarn > 0) && ($sEtat =="A")) || ($_SESSION['gar_optionnel']==true))
		if(isset($_SESSION['gar_optionnel']) && ($_SESSION['gar_optionnel'] == true) && ($sTypeRole == 'A') )
		{
			$oPageEdit->replace('url_garanties',"garantieoptionnelle/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		}
		else
		{
			$oPageEdit->replace('url_garanties',"#");	
		}
		
		//if($ncdtv > 0)
		if(isset($_SESSION['justificatif']) && ($_SESSION['justificatif'] == true) && (!empty($_SESSION['idRolePers'])))
		{
			$oPageEdit->replace('url_justificatifs',"justificatif/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		}
		else
		{
			$oPageEdit->replace('url_justificatifs',"#");
		}
		
	}
	else
	{
		$oPageEdit->replace('url_adresse',"#");	
		$oPageEdit->replace('url_communication',"#");
		$oPageEdit->replace('url_references',"#");
		$oPageEdit->replace('url_garanties',"#");
		if(isset($_SESSION['justificatif']) && ($_SESSION['justificatif'] == true) && (!empty($_SESSION['idRolePers'])))
		{
			$oPageEdit->replace('url_justificatifs',"justificatif/index.php?Identifiant_personne=".$_SESSION['IdPers']."&idcontrat=".$nIdcontrat."&idrole=".$_SESSION['idRolePers']);
		}
		else
		{
			$oPageEdit->replace('url_justificatifs',"#");
		}	
	}
	
	$oPageEdit->replace('url_Annuler', $urlAnnuler);
	$oPageEdit->replace('url_Retour', $urlRetour);
	
	//affichage message d'erreur
	$oPageEdit->iterateReplace('messages', $oForm->getValidMessage());
	
	/***** affichage de la page ainsi parametrée *****/
	echo $oPageEdit->toString();
	
	include_once '../../include/inc_pied_page.php';
?>